/*
 Highcharts JS v3.0.7 (2013-10-24)
 Exporting module

 (c) 2010-2013 Torstein Hønsi

 License: www.highcharts.com/license
 */
(function (f) {
    var A = f.Chart, t = f.addEvent, C = f.removeEvent, k = f.createElement, n = f.discardElement, u = f.css, o = f.merge, r = f.each, p = f.extend, D = Math.max, j = document, B = window, E = f.isTouchDevice, F = f.Renderer.prototype.symbols, x = f.getOptions(), y;
    p(x.lang, {
        printChart: "打印图表",
        downloadPNG: "下载jpg格式图表",
        downloadJPEG: "下载jpeg格式图表",
        downloadPDF: "下载pdf格式图表",
        downloadSVG: "下载svg格式图表",
        contextButtonTitle: "图标菜单"
    });
    x.navigation = {
        menuStyle: {
            border: "1px solid #A0A0A0",
            background: "#FFFFFF", padding: "5px 0"
        },
        menuItemStyle: {padding: "0 10px", background: "none", color: "#303030", fontSize: E ? "14px" : "11px"},
        menuItemHoverStyle: {background: "#4572A5", color: "#FFFFFF"},
        buttonOptions: {
            symbolFill: "#E0E0E0",
            symbolSize: 14,
            symbolStroke: "#666",
            symbolStrokeWidth: 3,
            symbolX: 12.5,
            symbolY: 10.5,
            align: "right",
            buttonSpacing: 3,
            height: 22,
            theme: {fill: "white", stroke: "none"},
            verticalAlign: "top",
            width: 24
        }
    };
    x.exporting = {
        type: "image/png", url: "http://export.highcharts.com", buttons: {
            contextButton: {
                menuClassName: "highcharts-contextmenu",
                symbol: "menu",
                _titleKey: "contextButtonTitle",
                menuItems: [{
                    textKey: "printChart", onclick: function () {
                        this.print()
                    }
                }, {separator: !0}, {
                    textKey: "downloadPNG", onclick: function () {
                        this.exportChart()
                    }
                }, {
                    textKey: "downloadJPEG", onclick: function () {
                        this.exportChart({type: "image/jpeg"})
                    }
                }, {
                    textKey: "downloadPDF", onclick: function () {
                        this.exportChart({type: "application/pdf"})
                    }
                }, {
                    textKey: "downloadSVG", onclick: function () {
                        this.exportChart({type: "image/svg+xml"})
                    }
                }]
            }
        }
    };
    f.post = function (c, a) {
        var d, b;
        b = k("form", {
            method: "post",
            action: c, enctype: "application/x-www-form-urlencoded"
        }, {display: "none"}, j.body);
        for (d in a)k("input", {type: "hidden", name: d, value: a[d]}, null, b);
        b.submit();
        n(b)
    };
    p(A.prototype, {
        getSVG: function (c) {
            var a = this, d, b, z, h, g = o(a.options, c);
            if (!j.createElementNS)j.createElementNS = function (a, b) {
                return j.createElement(b)
            };
            c = k("div", null, {
                position: "absolute",
                top: "-9999em",
                width: a.chartWidth + "px",
                height: a.chartHeight + "px"
            }, j.body);
            b = a.renderTo.style.width;
            h = a.renderTo.style.height;
            b = g.exporting.sourceWidth || g.chart.width || /px$/.test(b) &&
                parseInt(b, 10) || 600;
            h = g.exporting.sourceHeight || g.chart.height || /px$/.test(h) && parseInt(h, 10) || 400;
            p(g.chart, {animation: !1, renderTo: c, forExport: !0, width: b, height: h});
            g.exporting.enabled = !1;
            g.series = [];
            r(a.series, function (a) {
                z = o(a.options, {animation: !1, showCheckbox: !1, visible: a.visible});
                z.isInternal || g.series.push(z)
            });
            d = new f.Chart(g, a.callback);
            r(["xAxis", "yAxis"], function (b) {
                r(a[b], function (a, c) {
                    var g = d[b][c], f = a.getExtremes(), h = f.userMin, f = f.userMax;
                    g && (h !== void 0 || f !== void 0) && g.setExtremes(h,
                        f, !0, !1)
                })
            });
            b = d.container.innerHTML;
            g = null;
            d.destroy();
            n(c);
            b = b.replace(/zIndex="[^"]+"/g, "").replace(/isShadow="[^"]+"/g, "").replace(/symbolName="[^"]+"/g, "").replace(/jQuery[0-9]+="[^"]+"/g, "").replace(/url\([^#]+#/g, "url(#").replace(/<svg /, '<svg xmlns:xlink="http://www.w3.org/1999/xlink" ').replace(/ href=/g, " xlink:href=").replace(/\n/, " ").replace(/<\/svg>.*?$/, "</svg>").replace(/&nbsp;/g, " ").replace(/&shy;/g, "­").replace(/<IMG /g, "<image ").replace(/height=([^" ]+)/g, 'height="$1"').replace(/width=([^" ]+)/g,
                'width="$1"').replace(/hc-svg-href="([^"]+)">/g, 'xlink:href="$1"/>').replace(/id=([^" >]+)/g, 'id="$1"').replace(/class=([^" >]+)/g, 'class="$1"').replace(/ transform /g, " ").replace(/:(path|rect)/g, "$1").replace(/style="([^"]+)"/g, function (a) {
                    return a.toLowerCase()
                });
            return b = b.replace(/(url\(#highcharts-[0-9]+)&quot;/g, "$1").replace(/&quot;/g, "'")
        }, exportChart: function (c, a) {
            var c = c || {}, d = this.options.exporting, d = this.getSVG(o({chart: {borderRadius: 0}}, d.chartOptions, a, {
                exporting: {
                    sourceWidth: c.sourceWidth ||
                    d.sourceWidth, sourceHeight: c.sourceHeight || d.sourceHeight
                }
            })), c = o(this.options.exporting, c);
            f.post(c.url, {
                filename: c.filename || "chart",
                type: c.type,
                width: c.width || 0,
                scale: c.scale || 2,
                svg: d
            })
        }, print: function () {
            var c = this, a = c.container, d = [], b = a.parentNode, f = j.body, h = f.childNodes;
            if (!c.isPrinting)c.isPrinting = !0, r(h, function (a, b) {
                if (a.nodeType === 1)d[b] = a.style.display, a.style.display = "none"
            }), f.appendChild(a), B.focus(), B.print(), setTimeout(function () {
                b.appendChild(a);
                r(h, function (a, b) {
                    if (a.nodeType ===
                        1)a.style.display = d[b]
                });
                c.isPrinting = !1
            }, 1E3)
        }, contextMenu: function (c, a, d, b, f, h, g) {
            var e = this, j = e.options.navigation, q = j.menuItemStyle, l = e.chartWidth, m = e.chartHeight, o = "cache-" + c, i = e[o], s = D(f, h), v, w, n;
            if (!i)e[o] = i = k("div", {className: c}, {
                position: "absolute",
                zIndex: 1E3,
                padding: s + "px"
            }, e.container), v = k("div", null, p({
                MozBoxShadow: "3px 3px 10px #888",
                WebkitBoxShadow: "3px 3px 10px #888",
                boxShadow: "3px 3px 10px #888"
            }, j.menuStyle), i), w = function () {
                u(i, {display: "none"});
                g && g.setState(0);
                e.openMenu = !1
            }, t(i,
                "mouseleave", function () {
                    n = setTimeout(w, 500)
                }), t(i, "mouseenter", function () {
                clearTimeout(n)
            }), t(document, "mouseup", function (a) {
                e.pointer.inClass(a.target, c) || w()
            }), r(a, function (a) {
                if (a) {
                    var b = a.separator ? k("hr", null, null, v) : k("div", {
                        onmouseover: function () {
                            u(this, j.menuItemHoverStyle)
                        }, onmouseout: function () {
                            u(this, q)
                        }, onclick: function () {
                            w();
                            a.onclick.apply(e, arguments)
                        }, innerHTML: a.text || e.options.lang[a.textKey]
                    }, p({cursor: "pointer"}, q), v);
                    e.exportDivElements.push(b)
                }
            }), e.exportDivElements.push(v, i),
                e.exportMenuWidth = i.offsetWidth, e.exportMenuHeight = i.offsetHeight;
            a = {display: "block"};
            d + e.exportMenuWidth > l ? a.right = l - d - f - s + "px" : a.left = d - s + "px";
            b + h + e.exportMenuHeight > m && g.alignOptions.verticalAlign !== "top" ? a.bottom = m - b - s + "px" : a.top = b + h - s + "px";
            u(i, a);
            e.openMenu = !0
        }, addButton: function (c) {
            var a = this, d = a.renderer, b = o(a.options.navigation.buttonOptions, c), j = b.onclick, h = b.menuItems, g, e, k = {
                stroke: b.symbolStroke,
                fill: b.symbolFill
            }, q = b.symbolSize || 12;
            if (!a.btnCount)a.btnCount = 0;
            if (!a.exportDivElements)a.exportDivElements =
                [], a.exportSVGElements = [];
            if (b.enabled !== !1) {
                var l = b.theme, m = l.states, n = m && m.hover, m = m && m.select, i;
                delete l.states;
                j ? i = function () {
                    j.apply(a, arguments)
                } : h && (i = function () {
                    a.contextMenu(e.menuClassName, h, e.translateX, e.translateY, e.width, e.height, e);
                    e.setState(2)
                });
                b.text && b.symbol ? l.paddingLeft = f.pick(l.paddingLeft, 25) : b.text || p(l, {
                    width: b.width,
                    height: b.height,
                    padding: 0
                });
                e = d.button(b.text, 0, 0, i, l, n, m).attr({
                    title: a.options.lang[b._titleKey],
                    "stroke-linecap": "round"
                });
                e.menuClassName = c.menuClassName ||
                    "highcharts-menu-" + a.btnCount++;
                b.symbol && (g = d.symbol(b.symbol, b.symbolX - q / 2, b.symbolY - q / 2, q, q).attr(p(k, {
                    "stroke-width": b.symbolStrokeWidth || 1,
                    zIndex: 1
                })).add(e));
                e.add().align(p(b, {width: e.width, x: f.pick(b.x, y)}), !0, "spacingBox");
                y += (e.width + b.buttonSpacing) * (b.align === "right" ? -1 : 1);
                a.exportSVGElements.push(e, g)
            }
        }, destroyExport: function (c) {
            var c = c.target, a, d;
            for (a = 0; a < c.exportSVGElements.length; a++)if (d = c.exportSVGElements[a])d.onclick = d.ontouchstart = null, c.exportSVGElements[a] = d.destroy();
            for (a =
                     0; a < c.exportDivElements.length; a++)d = c.exportDivElements[a], C(d, "mouseleave"), c.exportDivElements[a] = d.onmouseout = d.onmouseover = d.ontouchstart = d.onclick = null, n(d)
        }
    });
    F.menu = function (c, a, d, b) {
        return ["M", c, a + 2.5, "L", c + d, a + 2.5, "M", c, a + b / 2 + 0.5, "L", c + d, a + b / 2 + 0.5, "M", c, a + b - 1.5, "L", c + d, a + b - 1.5]
    };
    A.prototype.callbacks.push(function (c) {
        var a, d = c.options.exporting, b = d.buttons;
        y = 0;
        if (d.enabled !== !1) {
            for (a in b)c.addButton(b[a]);
            t(c, "destroy", c.destroyExport)
        }
    })
})(Highcharts);
